package password

import (
	"coupons/pkg/logger"

	"golang.org/x/crypto/bcrypt"
)

/**
 * @Author       : Jinghua Fan
 * @Date         : 2021-12-25 15:04:40
 * @LastEditors  : Jinghua Fan
 * @LastEditTime : 2021-12-25 15:04:46
 * @Description  : 佛祖保佑,永无BUG
 */

// Hash 使用 bcrypt 对密码进行加密
func Hash(passowrd string) string {

	// GenerateFormPassword 的第二个参数是 cost 值, 建议大于 12, 数值越大耗费时间越长
	bytes, err := bcrypt.GenerateFromPassword([]byte(passowrd), 14)
	logger.LogError(err)
	return string(bytes)
}

// CheckHash 对比明文密码和数据库的哈希值
func CheckHash(password, hash string) bool {

	err := bcrypt.CompareHashAndPassword([]byte(hash), []byte(password))
	logger.LogError(err)
	return err == nil
}

// IsHash 判断字符串是否是哈希过的数据
func IsHash(str string) bool {
	// bcrypt 加密后的长度等于60
	return len(str) == 60
}
